function makeTheIntegerZero(num1, num2) {
  // 尝试不同的操作次数k
  // 最大尝试次数设为60是因为2^60已经非常大，足够覆盖题目约束
  for (let k = 1; k <= 60; k++) {
    // 计算k次操作后需要的2^i之和
    const S = num1 - k * num2;

    // 检查S是否满足条件：
    // 1. S必须为正数
    // 2. S的二进制表示中1的个数不能超过k（保证可以用k个2的幂表示）
    // 3. S不能小于k（每个2^i至少为1，k个之和至少为k）
    if (S > 0 && countBits(S) <= k && S >= k) {
      return k;
    }
  }

  // 如果尝试了所有可能的操作次数都无法得到0，则返回-1
  return -1;
}

// 辅助函数：计算数字的二进制表示中1的个数
function countBits(n) {
  let count = 0;
  while (n > 0) {
    count += n & 1;
    n = Math.floor(n / 2); // 使用除法而非移位，避免处理大数字时的精度问题
  }
  return count;
}

// 测试有问题的案例
console.log(makeTheIntegerZero(112577768, -501674825)); // 应返回正确结果
